package com.treasure.mall.biz.remote.wx;

import com.treasure.mall.biz.entity.order.SubOrderPO;
import com.treasure.mall.biz.remote.wx.dto.DeliverTemplateDTO;
import com.treasure.mall.biz.remote.wx.dto.LiveTemplateDTO;
import com.treasure.mall.biz.remote.wx.dto.UserCreateOrderTemplateDTO;

/**
 * 
 * <p>
 * +---------------------------------------------------------
 * * @package: com.treasure.mall.biz.remote.wx
 * * @author: guomw (guomwchen@foxmail.com)
 * * @date: 2020/8/26 9:24 下午
 * * @since: V1.0.0
 * +---------------------------------------------------------
 * 注意：本内容仅限于内部传阅，禁止外泄以及用于其他的商业目的
 * 
 */
public interface WxTemplateMessageService {

    /**
     * 支付成功模板消息
     *
     * @param orderPO
     */
    void sendPlaySuccessMessage(SubOrderPO orderPO);


    /**
     * 发送直播间开播消息
     */
    void sendLiveRoomMessage(LiveTemplateDTO liveTemplateDTO);

    /**
     * 给指定用户发送直播间通知
     *
     * @param userId
     * @param liveTemplateDTO
     */
    void sendUserByLiveRoomMessage(Long userId, LiveTemplateDTO liveTemplateDTO);

    /**
     * 发送关注消息 只在关注领取红包时调用
     *
     * @param userId    用户ID
     * @param redPacket 跳转首页是否显示红包领取成功
     */
    void sendSubscribeSuccessMessage(Long userId, boolean redPacket);

    /**
     * 发送关注成功通知
     *
     * @param unionId
     */
    void sendSubscribeSuccessMessage(String unionId);

    /**
     * 发货通知
     *
     * @param deliverTemplateDTO
     */
    void deliverSuccessMessage(DeliverTemplateDTO deliverTemplateDTO);


    void createOrderSuccessMessage(UserCreateOrderTemplateDTO dto);

    long subscribeCount();

    long countBySubscribeIsTrue();
}
